The present invention relates to handling of an index access in a database management system.
The technological progress in the computer hardware in recent years allows a computer to implement a multicore CPU including lots of CPU cores and large capacity memory. As a result, an in-memory database that stores and processes data on memory is becoming common as a database management system (DBMS). A conventional DBMS (disk DB) that stores data in a permanent storage medium (such as HDD and SSD) causes a bottleneck in performance in the input/output from/to the storage medium. On the other hand, because multiple threads executed on multiple CPU cores process data simultaneously on memory in the in-memory database, a conflict in the exclusive control between the threads causes a bottle neck. Thus, it is necessary to minimize exclusive conflicts between threads and allow lots of threads to perform database processing in parallel for improving the performance of a database management system.
Index access processing is processing apt to cause an exclusive conflict in a conventional database processing. Because lots of threads access the same data structure in parallel in the index access processing, the exclusive control for the data structure is required and simultaneous executing performance between the threads is degraded. When complex exclusive control processing is executed to avoid conflicts in the exclusive control and to improve the simultaneous access processing, the exclusive control processing becomes an overhead and causes a bottleneck in performance.
For the above-mentioned problem, Patent Literature 1 describes a technique of reducing the exclusive control, in searching an index tree, by determining that an intermediate node meeting search criteria and the higher-level nodes are exclusive control targets and by not executing the exclusive control to the lower-level nodes of the inter mediate node.
Non-patent Literature 1 describes a technique that an index tree is divided on a thread basis and each of the divided index subtrees is accessed by only one thread.